package com.yh.dao;

import com.yh.entity.Movie;

import java.util.List;

/**
 * @author yuhuan
 * @date 2022/01/13
 */
public interface MovieDao {
    /**
     * 查询所有的电影信息；忽略掉已经被标记为删除的影片
     *
     * @return 返回查找的所有影片的结果集
     */
    public List<Movie> findMovieAll();

    /**
     * 根据ID精确查询电影信息；忽略掉已经被标记为删除的影片
     *
     * @param movieId 影片的ID
     * @return 返回查找的影片信息
     */
    public Movie findMovieById(int movieId);

    /**
     * 根据ID精确查询电影信息；包括已经被标记为删除的影片
     *
     * @param movieId 影片的ID
     * @return 返回查找的影片信息
     */
    public Movie findMovieByIdNeedIgnoreState(int movieId);

    /**
     * 根据影片名称查询电影信息；忽略掉已经被标记为删除的影片
     *
     * @param movieName 影片的名称
     * @return 返回查找的所有影片信息(主要包含影片的ID)
     */
    public List<Movie> findMovieByName(String movieName);

    /**
     * 添加影片记录
     *
     * @param movie 需要添加的影片信息
     * @return 返回添加的总记录数
     */
    public int insertMovie(Movie movie);

    /**
     * 修改影片记录
     *
     * @param movie 需要修改的影片信息
     * @return 修改的总记录数
     */
    public int updateMovie(Movie movie);

    /**
     * 删除影片记录(真实的物理删除，已被弃用)
     *
     * @param movieId 影片的ID
     * @return 删除的总记录数
     */
    public int deleteMovie(int movieId);

    /**
     * 标记影片的状态为删除（逻辑删除，数据库仍然存在该记录）
     *
     * @param movieId    影片的ID
     * @param movieState 影片的标记状态
     * @return 标记的总记录数
     */
    public int removeMovie(int movieId, int movieState);
}
